package com.zxh.blog.redis;


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

import java.util.Set;

/**
 * @Author:wb-zxh410423
 * @Description:
 * @Date: Created in 10:56 2018/12/20
 */
public class RedisClient {
	private static JedisPool jedisPool = null;

	/**
	 * 初始化redis连接池
	 */
	static{
		JedisPoolConfig config = new JedisPoolConfig(); // Jedis连接池
		config.setMaxIdle(8); // 最大空闲连接数
		config.setMaxTotal(8);// 最大连接数
		config.setMaxWaitMillis(1000); // 获取连接是的最大等待时间，如果超时就抛出异常
		config.setTestOnBorrow(false);// 在borrow一个jedis实例时，是否提前进行validate操作；如果为true，则得到的jedis实例均是可用的；
		config.setTestOnReturn(true);
		jedisPool = new JedisPool(config, "localhost", 6379, 5000); // 配置、ip、端口、连接超时时间、密码、数据库编号（0~15）
	}

	/**
	 * string类型的基本操作，string是redis的最基本数据类型，很多操作都是其他数据类型能用的，如del、exists、expire
	 *
	 * @throws Exception
	 *
	 */
	public static void setString(String key,String value) throws Exception {
		Jedis jedis = jedisPool.getResource();

		jedis.set(key,value); // 往redis中放入字符串
		jedis.close();
	}

	/**
	 * string类型的基本操作，string是redis的最基本数据类型，很多操作都是其他数据类型能用的，如del、exists、expire
	 *
	 * @throws Exception
	 *
	 */
	public static String getString(String key) throws Exception {
		Jedis jedis = jedisPool.getResource();

		String keyResult = jedis.get(key);// 从redis中取字符串
		jedis.close();
		return keyResult;
	}

}
